Cron Could not open input file when runs - php

I don't know about cron jobs and I am trying to set them in my cPanel, so I have 2 php files I am trying to run:
covid-19_data.php
And utilities.php
on cPanel I run:
/usr/local/bin/php -q -f /public_html/wp-content/themes/siteName/scripts/data/shared/utilities.php
And
/usr/local/bin/php /home/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php
But i keep receiving:
Could not open input file: /public_html/wp-content/themes/siteName/scripts/data/shared/utilities.php
And
Warning: include_once(../shared/utilities.php): failed to open stream: No such file or directory in /home1/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php on line 3
Warning: include_once(): Failed opening '../shared/utilities.php' for inclusion (include_path='.:/opt/php56/lib/php') in /home1/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php on line 3
Warning: chdir(): No such file or directory (errno 2) in /home1/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php on line 12
Fatal error: Call to undefined function downloadFile() in /home1/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php on line 16
I tried running utilities.php every minute and covid-19_data.php every two minutes but doesn't work.
When I need to make it work, I only manually run via the browser wwww... covid-19_data.php and works fine, I don't need to run utilities.php I only made it run to try if that was the issue.

It sounds like your host runs cron jobs as nobody, or some other user that does not have access to the files in your account. Try changing the permissions of covid-19_data.php to allow "other" to read/execute it:
chmod o+rx /home/siteName/public_html/wp-content/themes/siteName/scripts/covid-19_data.php

Related

laravel on cpanel raise error for autoload_real.php on line 66

I am new to laravel and I run my website on localhost. It runs correctly but when I upload it on cpanel, it raises these errors :
Warning:
require(/home/didfilei/public_html/app/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php): failed to open stream: No such file or directory in
/home/didfilei/public_html/app/vendor/composer/autoload_real.php on
line 66
Warning:
require(/home/didfilei/public_html/app/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php): failed to open stream: No such file or directory in
/home/didfilei/public_html/app/vendor/composer/autoload_real.php on
line 66
Fatal error: require(): Failed opening required
'/home/didfilei/public_html/app/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php'
(include_path='.:/opt/cpanel/ea-php71/root/usr/share/pear') in
/home/didfilei/public_html/app/vendor/composer/autoload_real.php on
line 66
I solved it. I realized that after extracting the zip file with cpanel, some folders were deleted (eg '/ symfony'), so I got more space from the hosts, then my project extract correctly
Since you do not have access to SSH, you should upload the vendor files along with the rest of your project.
Be careful that if your dev machine is windows, you might face some issues with paths and case sensitivity.
You also need to check how php is executed in your host. You might have to fiddle around with file ownership and access rights.
Especially if suphp is used, your user must be the owner of everything in your folder, all files must be set to 644 and all folders to 755
SSH into your server and run composer update in the root of your project. This will pull in the required vendor files that you are missing.

Calling php with python subprocess.call generates php permissions errors

Trying to run php tests with python script.
Using codeception framework, which is successfully works when i'm executing it manually in terminal. But it generates permission issues when i'm trying to call it with subprocess.call like that
subprocess.call(['vendor/bin/codecept', 'run'])
Errors like
PHP Warning: require_once(/root/opt/testing/vendor/bin/autoload.php): failed to open stream: Permission denied in /root/opt/testing/vendor/bin/codecept on line 7
PHP Fatal error: require_once(): Failed opening required '/root/opt/testing/vendor/bin/autoload.php' (include_path='.:/usr/share/php') in /root/opt/testing/vendor/bin/codecept on line 7
Can't find the reason why. Changed all permissions to chmod a+x but still no results.
Looks like it definitely something with python.

cronjob execution php error

Im trying to create cronjob from php, I added it to crotanb:
sudo crontab -u www-data -l:
*/1 * * * * /usr/bin/php /var/www/html/service_script/cronTest.php
cronTest.php
<?php
echo 'it works';
include_once('../core/external_init.php');
And this is the output:
it works
PHP Warning: include_once(../core/external_init.php): failed to open stream: No such file or directory in /var/www/html/service_script/cronTest.php on line 3
PHP Warning: include_once(): Failed opening '../core/external_init.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/service_script/cronTest.php on line 3
PHP Fatal error: Uncaught Error: Class 'pluginClassManagement' not found in /var/www/html/service_script/cronTest.php:6
Stack trace:
#0 {main}
thrown in /var/www/html/service_script/cronTest.php on line 6
This cronTest.php works when I run it from browser.
If I change /usr/bin/php to /usr/lib/php I get this error instead:
/bin/sh: 1: /usr/lib/php: Permission denied
I dont really know what path should be here.
I have php7, i tried all kinds of thing to make this work, setting rights, make the script executable etc but now Im stuck on this and dont know what to do anymore
Try it with an absolute include path (like /var/www/path/to/core/external_init.php). I'm pretty sure, it uses the wrong working directory when run as cron.

PHP difference between terminal and browser

There is Neo4J installed on my Ubuntu and I'm running a test code. It's perfectly working when the code runs on terminal such as:
root#ekin-Inspiron-1090:/var/www# php neo.php
home: demolished
name: Arthur Dent
But when it comes to run on browser like localhost/neo.php, it gives fatal error and stops working.
Warning: require(phar://neo4jphp.phar): failed to open stream: operation failed in /var/www/neo.php on line 4 Fatal error: require(): Failed opening required 'phar://neo4jphp.phar' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/neo.php on line 4
I don't think it's really something with Neo4J or its PHP driver. What should be the reason?
edit: by the way, there are two php.ini files; i think one for apache and one for command line. I checked both of them and phar extension paths are the same. Also there are no include_path settings in both of them.
It's an authorization error. Apache runs under its own user, so you need to give apache user to access www folder.

PHPUnit fatal error and include_path

I just installed PHP and PEAR on my Mac OSX using MacPorts and then installed PHPUnit using PEAR. When I try to run PHPUnit, I get the following error message:
$ phpunit StackTest.php
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
PHP Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
Okay, so the file File/Iterator/Autoload.php isn't in my include_path, so I tried
$ ls -l /opt/local/lib/php/File/Iterator/Autoload.php
-rw-r--r-- 1 root admin 2682 May 23 14:38 /opt/local/lib/php/File/Iterator/Autoload.php
$ phpunit --include-path /opt/local/lib/php StackTest.php
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
PHP Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:/php/includes:/usr/local/php5/lib/php:/opt/local/lib/php/pear') in /opt/local/lib/php/PHPUnit/Autoload.php on line 45
It's still not working, and the it's not including the new path that it should be. Does anybody know what I can do about this? (I'd rather not modify my php.ini file if I can help it because it's read-only and I'm fairly new to PHP and don't want to mangle it in ways I don't understand.) Thanks.
Still don't have an answer for why --include-path on the command line isn't working, so here's what I did:
$ which phpunit
/opt/local/bin/phpunit
$ sudo emacs /opt/local/bin/phpunit
The plan is to modify the php.ini file, so first I had to figure out which php.ini was initializing phpunit. If anyone has a better way to do this, I'm happy to hear it. I added the following line to the phpunit code right after the <?php opening tag:
echo php_ini_loaded_file();
Now, when I ran phpunit, I got the following (here truncated) output:
/opt/local/etc/php5/php.iniPHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /opt/local/lib/php/PHPUnit/Autoload.php on line 45...
Then:
$ sudo emacs /opt/local/etc/php5/php.ini
I searched for the include_path directive and appended :/opt/local/lib/php to the end. So now, phpunit works, although I have no idea if I broke anything else in terms of my setup.
I had a similar problem with a Windows install, but I am not sure that it is the same problem on OSX. I found the that the PEAR install created the wrong path in the batch file used to launch the program.
The standard install causes the installed batch files to have errors. The final script line of the pear.bat batch file needs to have the include_path wrapped in single quotes ("include_path='%VARIABLE%'").
The change I made is:
"%PHP_PEAR_PHP_BIN%" -C -d memory_limit="-1" -d safe_mode=0 -d register_argc_argv="On" -d auto_prepend_file="" -d auto_append_file="" -d variables_order=EGPCS -d open_basedir="" -d output_buffering=1 -d "include_path='%PHP_PEAR_INSTALL_DIR%'" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
I am not sure if you have a similar problem to the one above for your install.
Failing that, my batch file for PHPUnit on Windows 7 is
if "%PHPBIN%" == "" set PHPBIN=C:\Program Files (x86)\PHP\php.exe
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "C:\Program Files (x86)\PHP\phpunit" %*
A less invasive way (without changing the php.ini permanently) is to include the following line in the script that fails: set_include_path("/opt/local/lib/php/");
The location you are including might be slightly different. If this doesn't work, search for a file called Autoload.php that is in a folder structure like this: File/Iterator/Autoload.php and use the path to File as the path in set_include_path().

Categories